package com.lmaye.eshop.inventory.constant;

import lombok.Builder;
import lombok.Getter;

import java.io.Serializable;

/**
 * <pre>
 *   ┏┓　　　┏┓
 * ┏┛┻━━━┛┻┓
 * ┃　　　　　　　┃
 * ┃　　　━　　　┃
 * ┃　┳┛　┗┳　┃
 * ┃　　　　　　　┃
 * ┃　　　┻　　　┃
 * ┃　　　　　　　┃
 * ┗━┓　　　┏━┛
 * 　　┃　　　┃神兽保佑
 * 　　┃　　　┃代码无BUG！
 * 　　┃　　　┗━━━┓
 * 　　┃　　　　　　　┣┓
 * 　　┃　　　　　　　┏┛
 * 　　┗┓┓┏━┳┓┏┛
 * 　　　┃┫┫　┃┫┫
 * 　　　┗┻┛　┗┻┛
 * </pre>
 * -- 错误信息
 *
 * @author lmay.Zhou
 * @date 2019/3/19 23:18 星期二
 * @qq 379839355
 * @email lmay@lmaye.com
 */
@Getter
@Builder
public class ErrorInfo implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 错误代码
     */
    private Integer code;

    /**
     * 错误信息
     */
    private String msg;

    /**
     * 基本错误
     *
     * @return  ErrorInfo
     */
    public static ErrorInfo error() {
        return ErrorInfo.builder().code(-100).msg("Failed").build();
    }

    /**
     * 基本错误
     *
     * @param msg   错误消息
     * @return  ErrorInfo
     */
    public static ErrorInfo error(String msg) {
        return ErrorInfo.builder().code(-100).msg(msg).build();
    }

    /**
     * 401 Unauthorized
     *
     * @return  ErrorInfo
     */
    public static ErrorInfo unauthorizedError() {
        return ErrorInfo.builder().code(401).msg("401 Unauthorized.").build();
    }

    /**
     * 403 Forbidden
     *
     * @return  ErrorInfo
     */
    public static ErrorInfo forbiddenError() {
        return ErrorInfo.builder().code(403).msg("403 Forbidden.").build();
    }

    /**
     * 404 Not Found
     *
     * @return  ErrorInfo
     */
    public static ErrorInfo notFoundError() {
        return ErrorInfo.builder().code(404).msg("404 Not Found.").build();
    }

    /**
     * 500 Internal Server Error
     *
     * @return  ErrorInfo
     */
    public static ErrorInfo internalServerError() {
        return ErrorInfo.builder().code(500).msg("500 Internal Server Error.").build();
    }
}
